Guard 语法

guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么。但与if语句不同的是,guard语句只会有一个代码块,不像if语句可以if else多个代码块。 guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句。 例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 func fooGuard(x: Int?) {
    guard x != nil else {
        // 变量不符合条件判断时,执行下面代码
        print("nil")
        return
    }
    // 使用x
    print(x!.description)
 }
 fooGuard(x: 800)

对非可选类型的变量这种用法也是奏效的:

1
2
3
4
5
6
7
8
9
 func fc() {
    let f : Int = 0
    guard f>0 else {
        // 变量不符合条件判断时,执行下面代码
        print("xxxxx   nil")
        return
    }
 }
 fc()